#! python3
# 用 requests 模块从 Web 下载文件

import requests

# from urllib.request import urlopen
# for line in urlopen('http://www.baidu.com'):
#     line = line.decode('utf-8')  # Decoding the binary data to text.
#     print(line)

response = requests.get('http://api.qingyunke.com/')
try:

    # 检查错误：在调用requests.get()之后调用raise_for_status()
    # 确保下载确实成功，然后再让程序继续
    response.raise_for_status()
    # print(type(response))
    print(response.status_code)
    print(response.encoding)
    # print(response.text[:300])  # 显示前 300 个字符

    """
    将下载的文件保存到硬盘
    必须用“写二进制”模式打开该文件即向函数传入字符串'wb'，作为 open()的第二参数。
    即使该页面是纯文本的，也需要写入二进制数据，而不是文本数据，
    目的是为了保存该文本中的“Unicode 编码”
    
    iter_content()方法在循环的每次迭代中，返回一段内容。
    每一段都是 bytes 数据类型，需要指定一段包含多少字节。
    10 万字节通常是不错的选择，所以将 100000作为参数传递给 iter_content()
    """
    file = open('../requests.txt', 'wb')
    for text in response.iter_content(100000):
        # write()方法返回一个数字，表示写入文件的字节数
        byteNum = file.write(text)
        print(byteNum)
    file.close()

except Exception as exc:
    print('There was a problem: %s' % exc)

